#ifndef ARMFSM_H
#define ARMFSM_H

#include "base_state.h"
#include <Eigen/Dense>
class ArmController;
namespace arm {
class FSM
{
public:
    //FSM();
    FSM(ArmController *arm_controller);
    ~FSM();
    void Update();
    void SetState(BaseState::StateType state);

    BaseState::StateType GetCurState()const{return cur_state_->GetState();}
    BaseState::StateType GetLastState()const{return last_state_->GetState();}

    ArmController *arm_controller_;
    BaseState *cur_state_;
    BaseState *last_state_;

private:
    BaseState *sleep_state_,*prepare_state_,*reset_state_,*working_state_,*pause_state_;
};


}


#endif // ARMFSM_H
